package com.tony.firewall;

import java.util.ArrayList;

import android.app.Notification;
import android.app.Service;
import android.content.Intent;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.IBinder;

import com.tony.firewall.data.DBHelper;
import com.tony.firewall.entity.MessageEntity;

public class MessageService extends Service {
	public static final String ACTION_START_ACTIVITY_SMS = "ACTION_START_ACTIVITY_SMS";
	public static final String BUNDLE_SMS_ENTITY = "BUNDLE_SMS_ENTITY";
	// private Receiver mSmsReceiver;// 监听短信是否发�?成功
	private Notification mNnotification;// 新短信的系统通知
	private static MessageService mSmsServie = null;

	public ArrayList<MessageEntity> getReceiveMessages() {
		return null;
		// return SmsActivity.smsMessages;
	}

	@Override
	public IBinder onBind(Intent intent) {
		// TODO Auto-generated method stub
		return null;
	}

	public static MessageService getService() {
		return mSmsServie;
	}

	@Override
	public void onCreate() {
		// mSmsReceiver = new SmsReceiver();
		// IntentFilter intnf = new IntentFilter();
		// intnf.addAction(ACTION_SMS_SEND_SUCCEED);
		// this.registerReceiver(mSmsReceiver, intnf);
		super.onCreate();

		if (mSmsServie == null) {
			mSmsServie = this;
		}

		if (DBHelper.getDBHelper() == null) {
			new DBHelper(this);
		}
		// // mProcessSMS = new ProcessSMS();
		// setSendMsgUrl();
	}

	// @Override
	// public void onStart(Intent intent, int startId) {
	// if (ACTION_STOP_SELF.equals(intent.getAction())) { // 停止自己
	// if (mRreadyMessages != null && mRreadyMessages.size() <= 0 && mSysMessages != null && mSysMessages.size() <= 0) {
	// stopSelf();
	// }
	// }
	// else if (ACTION_START_ACTIVITY_SMS.equals(intent.getAction())) {
	// showCacheMessage();
	// SmsEntity smsEntity = (SmsEntity) intent.getSerializableExtra(BUNDLE_SMS_ENTITY);
	// if (mIsDialogShow) {
	// cacheMessage(smsEntity);
	// }
	// else {
	// startSmsActivity(smsEntity);
	// }
	// lightScreen();
	// sendNotification();
	// }
	// else if (ACTION_DIALOG_ON_STOP.equals(intent.getAction())) { // 返回�?
	// showCacheMessage();
	// dialogOnStop();
	// }
	// else if (ACTION_DIALOG_RESENT.equals(intent.getAction())) { // 重发
	// showCacheMessage();
	// resend();
	// }
	// else if (ACTION_DIALOG_SYSSEND.equals(intent.getAction())) { // 短信发�?
	// showCacheMessage();
	// sysSend();
	// }
	// }

	public void setSendMsgUrl() {
		// String temUrl = "http://" + Utility.getServerAddress() + "/fsa/v2/";
		// // String temUrl = "http://" + Utility.getServerAddress()+"/wwwkkk/v2/";
		// String url = LocalConfig.getString(ConfigLogic.CONFIG_SENDMESSAGE_URL, "");
		// if (url.equals("")) {
		// LocalConfig.putString(ConfigLogic.CONFIG_SENDMESSAGE_URL, temUrl);
		// }
		// long time = LocalConfig.getLong(ConfigLogic.CONFIG_LOGIN_TIME, 0);
		// long nowTime = System.currentTimeMillis();
		// long xtime = nowTime - time;
		// long flagTime = 7 * 24 * 60 * 60 * 1000;// 7�?
		// if (time == 0 || xtime >= flagTime) {
		// SendActive sa = new SendActive(nowTime);
		// sa.start();
		// }
	}

	/**
	 * 添加用户活跃的类
	 * 
	 */
	// private class SendActive extends Thread {
	// private long time = 0;
	//
	// public SendActive(long time) {
	// this.time = time;
	// }
	//
	// public void run() {
	// // try {
	// // Message fmsg = new Message();
	// // fmsg.setM_sid(getSid());
	// // fmsg.setM_tel(getMoblie());
	// // fmsg.setM_id(getUserId());
	// // fmsg.setM_pwd(getPwd());
	// // int apn = getCurrentApn();
	// // String code = "-999";
	// // if (apn == 1 || apn == 2) {
	// // if (!fmsg.getM_pwd().equals("")) {
	// // code = mProcessSMS.sendActive(fmsg, false);
	// // }
	// // }
	// // else if (apn == 3) {
	// // if (!fmsg.getM_sid().equals("")) {
	// // code = mProcessSMS.sendActive(fmsg, true);
	// // }
	// // }
	// // if (code.equals("200")) {
	// // LocalConfig.putLong(ConfigLogic.CONFIG_LOGIN_TIME, time);
	// // }
	// // LogUtil.d("返回代码�? + code);
	// // }
	// // catch (Exception e) {
	// // e.printStackTrace();
	// // }
	// }
	// }

	/**
	 * 发�?收到短信通知
	 */
	private void sendNotification() {
		// 通知栏滚动提示文�?
		// String tickerText = getResources().getString(R.string.new_sms_notification);
		// // 通知栏图�?
		// int icon = com.android.lbingt.R.drawable.ic_launcher;
		// // 内容标题
		// String contentTitle = getResources().getString(R.string.new_sms_notification);
		// // 内容文字
		// String contentText = "";
		//
		// // Notification的Intent，即点击后转向的Activity
		// Intent notificationIntent = new Intent(this, FSmsActivity.class);
		// notificationIntent.putExtra(FSmsActivity.IS_FROM_NOTIFICATION, true);
		// notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		// PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
		//
		// // 创建通知
		// mNnotification = new Notification(icon, tickerText, System.currentTimeMillis());
		// // 自定义声�?
		// mNnotification.sound = getNotifySound();
		// // 设置默认振动
		// mNnotification.defaults |= Notification.DEFAULT_VIBRATE;
		// // 设置默认LED
		// mNnotification.flags |= Notification.FLAG_SHOW_LIGHTS;
		// mNnotification.defaults |= Notification.DEFAULT_LIGHTS;
		// // //在用户点击清除所有�?知时触发
		// // Intent intent = new Intent(SMSService.ACTION_SMS_SERVICE);
		// // intent.putExtra(SMSService.FLAG_CODE, SMSService.R_MSG);
		// // PendingIntent deleteIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
		// // notification.deleteIntent = deleteIntent;
		//
		// mNnotification.setLatestEventInfo(this, contentTitle, contentText, contentIntent);
		// // 显示这个notification
		// ((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).notify(/*NOTIFICATION_NEW_SMS*/0, mNnotification);
	}

	/**
	 * 设置的声音文件存在时返回该声音Uri，否则返回默认�?知声音Uri
	 * 
	 * @return
	 */
	private Uri getNotifySound() {
		// InputStream is = null;
		// String soundStr = LocalConfig.getString(ConfigLogic.CONFIG_SET_NOTIFY_SOUND, null);
		// if (soundStr != null) {
		// try {
		// Uri soundUri = Uri.parse(soundStr);
		// is = this.getContentResolver().openInputStream(soundUri);
		// return soundUri;
		// }
		// catch (FileNotFoundException e) {
		// return getDefaultNotifySound();
		// }
		// finally {
		// if (is != null) {
		// try {
		// is.close();
		// }
		// catch (IOException e) {
		// e.printStackTrace();
		// }
		// }
		// }
		// }
		// else {
		// // 不存在铃声记录，返回默认铃声
		return getDefaultNotifySound();
		// }
	}

	/**
	 * 获取默认通知铃声
	 * 
	 * @return
	 */
	private Uri getDefaultNotifySound() {
		return RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
	}

	// 处理来信提示音及振动
	public void setNotifi() {
		// int ntftype = AndroidUtil.getAudioManagerMode(this);
		// // 通知模式，Notification.DEFAULT_SOUND只有声音，Notification.DEFAULT_VIBRATE只有震动，Notification.DEFAULT_ALL震动加铃�?
		// if (ntftype == Notification.DEFAULT_ALL) {
		// AndroidUtil.startVibrator(this, 1000);
		// playSmsVoide();
		// }
		// else if (ntftype == Notification.DEFAULT_VIBRATE) {
		// AndroidUtil.startVibrator(this, 1000);
		// }
		// else if (ntftype == Notification.DEFAULT_SOUND) {
		// playSmsVoide();
		// }
	}

	/**
	 * 启动拦截短信界面展示短信
	 * 
	 * @param intent
	 */
	public void startSmsActivity(MessageEntity messageEntity) {
		Intent intent = new Intent(this, FirewallActivity.class);
		intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		intent.putExtra(BUNDLE_SMS_ENTITY, messageEntity);
		this.startActivity(intent);
	}

	/**
	 * 显示缓存消息
	 */
	public void showCacheMessage() {
		if (cacheMessages != null) {
			for (int i = 0; i < cacheMessages.size(); i++) {
				startSmsActivity(cacheMessages.get(i));
			}
			cacheMessages = null;
		}
	}

	/**
	 * 把收到的短信息缓存�?
	 */
	private ArrayList<MessageEntity> cacheMessages = null;

	public void cacheMessage(MessageEntity messageEntity) {
		if (cacheMessages == null) {
			cacheMessages = new ArrayList<MessageEntity>();
		}
		cacheMessages.add(messageEntity);
	}

	public void onDestroy() {
		// boolean b = getReceiveMsgs().size() <= 0;
		// if (b) {
		// // this.unregisterReceiver(mSmsReceiver);
		super.onDestroy();
		// }
	}

	// public void sendSms(MessageEntity se) {
	// Toast.makeText(this, "消息发�?�?..", Toast.LENGTH_LONG).show();
	// mRreadyMessages.add(se);
	// if (!mIsSending) {
	// SendHttp();
	// }
	// }

	// /**
	// * 用http协议发消息�?
	// */
	// public void SendHttp() {
	// mIsSending = true;
	// new Thread() {
	// public void run() {
	// // replyMessage();
	// }
	// }.start();
	// }

	// public void sendSysSms(final MessageEntity se) {
	// Toast.makeText(this, "消息发�?�?..", Toast.LENGTH_LONG).show();
	// if (se != null) {
	// mSysMessages.add(se);
	// new Thread() {
	// public void run() {
	// Utility.sendSMS(MessageService.this, "", se.getAddress(), ACTION_SMS_SEND_SUCCEED, true);
	// // Utility.sendSMS(SmsService.this, se.getReply(), se.getAddress(), ACTION_SMS_SEND_SUCCEED, true);
	// }
	// }.start();
	// }
	// }

	// private UserProperties getUserProperties() {
	// return Application.getInstance().getUserProperties();
	// }

	// public String getMoblie() {
	// // String mobile = LocalConfig.getPreviousMobileNO();
	// // if (mobile.equals("")) {
	// // UserProperties user = getUserProperties();
	// // mobile = user.getMobileNumber();
	// // mobile = mobile == null ? "" : mobile;
	// // }
	// // return mobile;
	// }

	// public String getSid() {
	// // String sid = LocalConfig.getPreviousNO();
	// // if (sid.equals("")) {
	// // UserProperties user = getUserProperties();
	// // sid = user.getId();
	// // sid = sid == null ? "" : sid;
	// // }
	// // return sid;
	// }

	// public String getUserId() {
	// // String userId = LocalConfig.getString(ConfigLogic.CONFIG_USER_ID, "");
	// // if (userId.equals("")) {
	// // UserProperties user = getUserProperties();
	// // userId = user.getId();
	// // userId = userId == null ? "" : userId;
	// // }
	// // return userId;
	// }

	// public String getPwd() {
	// // String pwd = LocalConfig.getPassword();
	// // pwd = pwd == null ? "" : pwd;
	// // return pwd;
	// }

	/***************************************************************************************************
	 * 发�?短信逻辑处理
	 * **************************************************************************************************/
	/**
	 * 回复消息
	 */
	// public void replyMessage() {
	// // if (mRreadyMessages.size() <= 0) {
	// // if (getReceiveMsgs().size() <= 0 && mSysMessages.size() <= 0) {
	// // stopSelf();
	// // }
	// // mIsSending = false;
	// // return;
	// // }
	// // SmsEntity smsEntity = mRreadyMessages.get(0);
	// // Message fmsg = new Message();
	// // fmsg.setM_sid(getSid());
	// // fmsg.setM_tel(getMoblie());
	// // fmsg.setM_id(getUserId());
	// // fmsg.setM_pwd(getPwd());
	// //
	// // fmsg.setT_sid(smsEntity.getContact().getId());
	// // fmsg.setT_uri(smsEntity.getContact().getUri());
	// // fmsg.setT_id(smsEntity.getContact().getId());
	// // fmsg.setMessage(smsEntity.getReply());
	// // int apn = getCurrentApn();
	// // boolean net_type = false;
	// // if (apn == 3) {
	// // net_type = true;
	// // }
	// // try {
	// // String respCode = mProcessSMS.sendMessage(fmsg, net_type);
	// // if (!respCode.equals("200")) {
	// // showErrorDialog();
	// // }
	// // else {
	// // SMSOperate.insertSMSSent(this, smsEntity.getReply(), smsEntity.getAddress(), true);
	// // mRreadyMessages.remove(0);
	// // replyMessage();
	// // }
	// // }
	// // catch (Exception e) {
	// // e.printStackTrace();
	// // }
	//
	// }

	// private boolean isLaunchByUser() {
	// // return ((Application) getApplication()).getLaunchType() != LaunchType.LAUNCH_BY_SPIRIT;
	// }

	/**
	 * 登录失败处理
	 */
	// public void showErrorDialog() {
	// if (isLaunchByUser()) {
	// return;
	// }
	// // new Handler(Looper.getMainLooper()).post(new Runnable() {
	// // public void run() {
	// // Intent intent = new Intent(SmsService.this, ConfirmDialog.class);
	// // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
	// // intent.addFlags(Intent.FLAG_ACTIVITY_NO_USER_ACTION);
	// // startActivity(intent);
	// // mIsDialogShow = true;
	// // }
	// // });
	// }

	// /**
	// * 返回键发送消息处�?
	// */
	// public void dialogOnStop() {
	// mIsDialogShow = false;
	// if (mRreadyMessages.size() <= 0) {
	// return;
	// }
	// MessageEntity temSms = mRreadyMessages.get(0);
	// Utility.insertSMSSent(this, "", temSms.getAddress(), false);
	// // Utility.insertSMSSent(this, temSms.getReply(), temSms.getAddress(), false);
	// mRreadyMessages.remove(0);
	//
	// if (mRreadyMessages.size() > 0) {
	// SendHttp();
	// }
	// else {
	// mIsSending = false;
	// if (getReceiveMsgs().size() <= 0 && mSysMessages.size() <= 0) {
	// stopSelf();
	// }
	// }
	// }
	//
	// /**
	// * 重新发�?
	// */
	// public void resend() {
	// SendHttp();
	// }

	/**
	 * @return 0:未知或空, 1:wifi, 2:cmnet或其他没有代理的apn, 3:cmwap,4:cmwap
	 * 
	 */
	// public int getCurrentApn() {
	// // if (NetUtil.isConnected()) {
	// // String apn = NetUtil.getCurrentApnName(false);
	// // if (apn.equals("1")) {
	// // return 1;
	// // }
	// // else if (apn.equals("2")) {
	// // return 2;
	// // }
	// // else if (apn.equals("3")) {
	// // return 3;
	// // }
	// // }
	// // return 0;
	// }

	// /**
	// * 短信发�?成功广播监听
	// *
	// */
	// class Receiver extends BroadcastReceiver {
	// public void onReceive(Context context, Intent intent) {
	// // TODO 系统发�?短信后发出的Action，这里只关心短信是否已经执行过smsManager.sendTextMessage，不关心发�?是否失败
	// if (ACTION_SMS_SEND_SUCCEED.equals(intent.getAction())) {
	// if (mSysMessages.size() > 0) {
	// mSysMessages.remove(0);
	// }
	// if (mSysMessages.size() == 0 && mRreadyMessages.size() == 0 && getReceiveMsgs().size() == 0) {
	// stopSelf();
	// }
	// }
	// }
	// }
	//
	// private void sysSend() {
	// if (mRreadyMessages.size() <= 0) {
	// return;
	// }
	// MessageEntity nowSms = mRreadyMessages.get(0);
	// sendSysSms(nowSms);
	// mRreadyMessages.remove(0);
	// if (mRreadyMessages.size() > 0) {
	// SendHttp();
	// }
	// else {
	// mIsSending = false;
	// if (getReceiveMsgs().size() <= 0 && mSysMessages.size() <= 0) {
	// stopSelf();
	// }
	// }
	// }
}